home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #15
/
Monster Media Number 15 (Monster Media)(July 1996).ISO
/
bbs_util
/
gfxck122.zip
/
GFXCHK.DOC
< prev
next >
Wrap
Text File
|
1996-04-16
|
25KB
|
540 lines
┌──────────────────────────────────────────┐
│ G F X C h e c k │
│ GIF/JPEG/BMP Graphics Checking Utility │
└──────────────────────────────────────────┘
Version 1.22
(c) Copyright 1995-1996 - Stacy Smith
Courtesy of:
The Bloom Beacon-Picayune BBS
Node 1: *** DOWN *** (USRobotics Courier Dual Standard V.34)
FidoNet
ILink
Intelec
Stacy Smith
┌────────────────────┐
│ 1. Introduction: │
└────────────────────┘
GFXCheck was developed to provide the cyberspace community with a means of
validating GIF, JPEG and BMP graphics files without the need for actually
firing up a graphics file viewer. While there are similar utilities available
for GIF files, they are generally dated, run only under DOS and do nothing to
validate JPEG (currently the leading graphics file format technology) or BMP
files.
GFXCheck was designed to address these specific issues. While GFXCheck
obviously cannot determine the subjective quality of an image, it can detect
many common defects and corruption that can occur in graphic files being
transferred by a variety of media.
┌────────────────────────────┐
│ 2. Features of GFXCheck: │
└────────────────────────────┘
∙ Native versions for both 16-bit DOS and 32-bit OS/2!
∙ Automatically identifies (by signature) GIF87a and GIF89a GIF files, JFIF
1.x format JPEG files, and Windows, OS/2 1.x and OS/2 2.x format BMP
files.
∙ Validates graphics files for proper format and construction (e.g. invalid
structure, unexpected end of file, etc.).
∙ Trims any extraneous bytes from the end of the graphic file.
∙ Rejection of graphics files based upon image parameters (e.g. width,
height and/or number of colors). These can be set individually for GIF,
JPEG and BMP graphic formats.
∙ Logging of existing GIF and JPEG comments.
∙ User-defined stripping and/or insertion of GIF and JPEG comments.
∙ User-defined disposition of defective or rejected graphic files.
∙ Updates BBS file descriptions (PCBoard-format or similar) with a user-
configurable information string.
∙ User-selectable process logging to a disk file.
∙ Written completely in C for optimal speed, using Watcom C/C++ 10.0.
┌──────────────────────────────────────────────────────────┐
│ 3. Files Included in the GFXCheck Distribution Archive │
└──────────────────────────────────────────────────────────┘
GFXCHK.EXE GFXCheck file checker program (16-bit DOS).
GFXCHK2.EXE GFXCheck file checker program (32-bit OS/2).
GFXCHK.DOC This file.
SAMPLE.CFG Sample configuration file.
GIF.TPL Sample GIF comment template.
JPEG.TPL Sample JPEG comment template.
SUPPORT.DOC List of authorized support sites for my shareware.
HISTORY.DOC GFXCheck revision history in reverse order.
REGISTER.FRM Registration form for GFXCheck and other software.
FILE_ID.DIZ Internal description file.
When you unzip the distribution archive, you should see my PKZIP authenticity
verification stamp, and a '-AV' after every file in the archive:
# SSU301 The Bloom Beacon-Picayune BBS
If there are any files missing or added, or the -AV stamp is missing, the
archive has been tampered with. It would be advisable to call my BBS (listed
at the top of this document) or one of the support sites listed in the
SUPPORT.DOC file for the latest version of GFXCheck.
┌───────────────────────────┐
│ 4. Program Requirements │
└───────────────────────────┘
To the best of my knowledge, this program will run on most any machine, as it
uses no specific hardware or operating system features. I have personally
tested GFXCheck under OS/2 Warp 3.0, DOS 6.20, DESQview and Windows for
Workgroups 3.11, although I don't expect problems under other configurations
given they conform to the general requirements of GFXCheck.
GFXCheck requires DOS 3.x and higher (or OS/2 2.0 and higher for GFXCheck/2),
as it uses DOS SHARE-compatible file reads and writes. GFXCheck's memory
requirements are very small (less than 100K) and should run merrily under most
any upload or file processing software, in many cases without any need for
swapping.
┌───────────────────┐
│ 5. Registration │
└───────────────────┘
GFXCheck is not free; nor is GFXCheck crippled to force registration. GFXCheck
is fully functional, and will always remain so. The only variation with the
registered copies is no time delay and beg message.
Why register? Besides a clean conscience, you will get a registration key
that will work for all future versions of GFXCheck, and will remove the delay
and beg message at the end of execution.
The registration fee for your unique key is $20 for hobbyist use. The
registration fee for commercial use, defined if you use GFXCheck in the course
of a commercial business or for profit (e.g. CD-ROM production, more than 10
BBS nodes, etc.), is $30. Refer to the file REGISTER.FRM for more registration
information. Please print the file REGISTER.FRM and fill it out. You can
print out the form by issuing the following command from the DOS prompt:
TYPE REGISTER.FRM > PRN
┌───────────────────────────────────────┐
│ 6. License, Warranty and Disclaimer │
└───────────────────────────────────────┘
I'll keep this part short and sweet, and dispense with the legal-ese:
License: You are allowed to use GFXCheck for 30 days, after which you must
either register GFXCheck or stop using it completely. Decompiling,
disassembly or any other form of reverse-engineering GFXCheck for any
purpose is prohibited. GFXCheck registration is a license for your use
of GFXCheck; I retain ownership of the software. A single registration
applies to a single enterprise (e.g. BBS, CD-ROM mastering company)
regardless of the number of computers used. If you run two or more
distinct BBS systems on the same computer (with different names), you
require two or more GFXCheck registrations. GFXCheck registrations are
not transferrable; you cannot sell your registration to another person.
Warranty: There isn't one. The only thing I'll guarantee is that GFXCheck
will take up disk space, and will disappear when deleted.
Disclaimer: I'm not responsible for anything bad that happens. GFXCheck
works for me, but I cannot be held responsible for it not working on
your computer or doing any damage to hardware or software.
If these conditions aren't agreeable with you, then the best thing to do is
delete GFXCheck right now. I'll do my best to help any user (registered or
not) that wants to use GFXCheck, and I'll act on bug reports quickly, but I
simply cannot and will not be responsible for anything bad, like lost data,
disk crashes, or whatever else you can think of.
┌───────────────────┐
│ 7. Installation │
└───────────────────┘
GENERAL INSTALLATION:
─────────────────────
Make a subdirectory on your hard drive. For the purposes of this document,
we'll call it "D:\GFXCHK". Unarchive the GFXCheck distribution archive into
this subdirectory. You've more than likely already made it this far, if you're
reading this file. <grin>
The GFXCheck program opens a few files at once for various reasons. I would
recommend that you have a minimum of FILES=30 per node in your system
CONFIG.SYS file for a DOS single-node system, since GFXCheck is often run in
conjunction with your BBS and upload or file processing software.
If you are running under a DOS network or a multitasking operating system, you
should already have DOS's SHARE.EXE loaded. You must have SHARE loaded (or
running an operating system that has SHARE functionality, such as OS/2 or
Novell) in order to take advantage of the file sharing and locking methods used
by the GFXCheck program to prevent data loss. (If you are running a single-
node system without a multitasker, SHARE is not needed).
Edit the sample configuration file to suit your needs. Proper configuration
will require you to refer to this section and the section titled
"Configuration", which has an in-depth explanation of each configuration
parameter and its function. It might be wise to fire up your printer for this
document.
Note that for the GFXCheck program, you can obtain a limited program syntax
screen simply by executing the program without any command-line switches.
COMMAND-LINE SWITCHES:
──────────────────────
As a bare minimum, GFXCheck requires two command line parameters: one for the
GFXCheck's configuration file (-C switch) and another for the graphic file(s)
to test (-F switch). For example, the following command lines are both valid:
D:\GFXCHK\GFXCHK.EXE -Cd:\gfxchk\gfxchk.cfg -Fd:\path\graphic.ext
GFXCHK.EXE -Cgfxchk.cfg -Fd:\path\graphic.ext
The second command line will work if your GFXCheck subdirectory is part of your
system's PATH. In order to find the configuration file, GFXCheck will first
try to open the configuration file as passed. If that fails, GFXCheck will
then try to open the same file in the same directory that GFXCHK.EXE is in
(unless an explicit path has been passed on the command line as in the first
example).
If you want GFXCheck to update file descriptions, the corresponding description
file must be passed on the command line using the -D switch:
GFXCHK.EXE -Cgfxchk.cfg -Fd:\path\graphic.ext -Dd:\path\desc.lst
Note that GFXCheck will modify only descriptions for graphic file(s) that it
has processed; descriptions for any other files will be retained without
change. Further, if no matching description is found, GFXCheck will not add a
description; it will log the fact that a description is missing in its log
file.
GFXCheck by default will check all graphics files passed to it. If you only
want to extract image parameters and skip validation, add the -I command line
switch. This will greatly speed processing if you do not need to perform any
checking at that time. For example, if you only want to update your BBS
descriptions, this switch would make the process quicker. Do not use this
switch under normal testing conditions in your file/upload processor.
The -R command line switch forces GFXCheck to restore the graphic file date and
time stamps. By default, if GFXCheck updates the file (by trimming extraneous
bytes), the date will be changed to reflect the date of modification.
Lastly, GFXCheck normally sounds a beep on error. If this is not desired, the
-Q switch will silence GFXCheck during operation.
INSTALLATION INTO YOUR BBS UPLOAD PROCESSOR:
────────────────────────────────────────────
GFXCheck is designed to operate like most any other file checker, such as virus
checkers, etc.. Generally, it will operate on a subdirectory of files that
have already been extracted by the upload processing system or will be passed a
specific graphic file to check.
The best application for GFXCheck is to be executed as a graphic file test
utility where just graphic files are passed to it by the calling program, e.g.:
D:\GFXCHK\GFXCHK.EXE -Cd:\gfxchk\gfxchk.cfg -Fd:\path\graphic.ext
In the case of UpLoadProcessor (2.10 or higher), the command line is simply:
D:\GFXCHK\GFXCHK.EXE -Cgfxchk.cfg -F@FILE@
In the absence of a feature to execute checkers solely for graphic files in the
calling program, GFXCheck can be configured similar to a virus-scanning
program, since at that point in time the files are already extracted from the
upload being processed. Depending upon how your upload processor operates, the
command lines and configuration can be different.
If your upload processor executes the file testers from the directory where the
files are located (UpLoadProcessor is an example of this behavior, although it
can pass specific graphic files to GFXCheck), the command line can be simply:
D:\GFXCHK\GFXCHK.EXE -Cd:\gfxchk\gfxchk.cfg -F*.*
GFXCheck also supports list files when preceeded by a '@' character (e.g.
-F@FILE.LST) for the file command-line switch parameter. The list file must
have one filespec per line, standard DOS wildcards are permitted. Any line in
the list starting with a semicolon will be considered a comment and skipped.
Note that if you use GFXCheck in this manner, you should turn off the
FAIL_UNKNOWN configuration switch to prevent unknown (non-graphic) format files
from triggering a failure.
┌────────────────────┐
│ 8. Configuration │
└────────────────────┘
The sample configuration file included in the distribution archive is heavily
commented, but some additional information is provided below:
LOG_FILE
GFXCheck will write process and error information to a log file, if
desired. This parameter is the path/filename of the log file for GFXCheck
to record its activities. Comment out if you don't want any disk logging.
If you need support for GFXCheck, the first thing you will have to have is
a log file, so it is recommmended that you configure one.
LOG_MODE
Assuming the a log file is configured, GFXCheck can write two types of
logs: VERBOSE and TERSE. TERSE logs little more than pass and fail, while
VERBOSE offers more detailed information on the files being checked.
GOOD_ERRLEV
The errorlevel that GFXCheck is to return to the operating system if no
errors were found in any file processed. If commented out, this value will
default to 0, since most upload and file processors assume non-zero
errorlevels to be program execution errors, not information. This value
must be between 0 and 255, inclusive.
FAIL_ERRLEV
The errorlevel that GFXCheck is to return to the operating system if one or
more graphic files checked is defective. This value defaults to 1. This
value must be between 0 and 255, inclusive, or -1. If -1 is specified, the
GFXCheck error code of the file is returned to the operating system. Note
that if multiple files are processed, the result code of the last file
processed will be returned (which could be 0 if no error was encountered).
It is recommended that a fixed failure errorlevel be used unless you ensure
GFXCheck processes files individually, where the return code/errorlevel is
meaningful.
FAIL_UNKNOWN
GFXCheck will normally fail a non-graphic file as an unknown format.
Setting this parameter to NO will prevent this. This can be useful for
third party processors that pass an entire directory of various files to
file checking programs without specifically delineating graphic files.
DISPOSITION
This parameter defines how GFXCheck dispositions defective graphic files.
Three options are available: NONE (if GFXCheck is to leave the defective
file alone), RENAME (if GFXCheck is the rename the file to .BAD) or DELETE
(self-explanatory). The default is NONE.
Note that the disposition will be applied to description processing if in
process. If the disposition is set to RENAME, the filename will be renamed
in the description file; if DELETE, the file's description will be deleted.
TRIM_EOF
With this option enabled, GFXCheck will trim any extraneous bytes from the
end of a GIF or JPEG graphic file, saving disk space and easing the job of
your duplication checking software, if any. If commented out, trimming
will be enabled.
GIF_MIN_RES, JPEG_MIN_RES and BMP_MIN_RES
The minimum acceptable image resolution GFXCheck is to accept for graphic
files in the format "WIDTH x HEIGHT x COLORS"; this can be set for the two
formats independently via the two configuration keywords. If a particular
element of the image value is set to 0, GFXCheck will not use that element
in the evaluation. Setting to 0x0x0 will disable the image resolution
check entirely and will prevent rejection based upon resolution.
ALLOW_GIFLITE
If GFXCheck is to accept GIF files that have been compressed with GIFLITE,
set this to YES. Otherwise, set it to NO or comment out the line. GIFLITE
poses problems to duplication checking systems such as that in ULP, ZDCS,
etc. due to it's variable user-defined compression ratio. A user could
conceivably compress the same image several times, producing several files
that would be the same image but mathematically different. Default is NO.
GIF_INFO_FMT, JPEG_INFO_FMT and BMP_INFO_FMT
GFXCheck can update BBS directory listings with an information line for
good GIF, JPEG and/or BMP files. The following lines define the format for
the informational line using various @-macros. Recognized @-macros are:
@BOARDNAME@ BBS name (from key file)
@SYSTIME@ System time
@SYSDATE@ System date
@SYSOPNAME@ BBS sysop's name (from key file)
@SERIAL@ GFXCheck serial number (from key file)
@VERSION@ GFXCheck revision number
@FILENAME@ Filename being processed
@FORMAT@ Format of the file ("GIF87a", "GIF89a", "JPEG" or "BMP")
@OSIZE@ Original file size
@NSIZE@ New file size
@WID@ GIF/JPEG/BMP image width
@HGT@ GIF/JPEG/BMP image height
@COL@ GIF/JPEG/BMP number of colors
@SCOL@ GIF/JPEG/BMP number of colors (shortened form)
@COMP@ GIF compression ("GIFLITE" or "None")
INFO_POS
This defines where the inserted text will be placed, as an appended line
(NEW_LINE) or on the first line (FIRST_LINE) by itself. The default value
is NEW_LINE.
SEC_DESC_COL
If GFXCheck is to update BBS directory listings with an information line,
the following defines the column for the secondary desc character. The
defaults is 32, matching PCBoard's default value.
SEC_DESC_CHAR
If GFXCheck is to update BBS directory listings with an information line,
this defines the secondary desc character. The default is '|', matching
PCBoard's default character.
CMT_LOG_FILE
GFXCheck can extract the current comment from the graphics file and log it
to a log file if this information is of any interest. Comment out if no
comment logging is desired. This cannot be the same file defined as the
LOG_FILE paramter!
GIF_STRIP_CMT and JPEG_STRIP_CMT
GFXCheck can strip the current comment from a GIF or JPEG graphics file.
If you want any existing comment stripped, enable one or both parameters.
GIF_CMT_TPL and JPEG_CMT_TPL
GFXCheck is fully capable inserting a new comment into a graphics file;
note that in the process of doing so, GFXCheck will strip any previous
comment. The comments are designed as a template using the same
@-variables as the information lines and can be individually configured for
GIF and JPEG files. If no comments are to be inserted, comment out the
parameters. Since many graphics viewers do not like high ASCII, use only
plain text in your comment templates. Note that in keeping with the GIF
standards, if a comment is inserted into a GIF87a GIF file, it will be
changed to GIF89a, the format that supports comments.
┌──────────────────────────────────┐
│ 9. BBS Application Information │
└──────────────────────────────────┘
UPLOADPROCESSOR:
────────────────
The correct configuration setup for GFXCheck within UpLoadProcessor 2.10 (or
higher) is as a graphics file checker. In the "GIF/JPEG File Testing" menu of
ULPSM, set up the GIF and JPEG file checker command lines as follows:
Checker command: c:\gfxchk\gfxchk -Cgfxchk.cfg -F@FILE@
Successful errorlevel: 0 (must match GOOD_ERRLEV setting)
Run in a window: Doesn't matter...<N>o might be a little faster
In addition, ULP users should not allow GFXCheck to reject based upon
resolution, as ULP has that ability internally. Set the GIF_MIN_RES and
JPEG_MIN_RES parameters to "0x0x0".
As ULP has it's own GIF/JPEG information line functionality, it is not possible
to have GFXCheck update the file description.
GENERIC BATCH FILE:
───────────────────
The following generic batch file (modeled after PCBTEST.BAT) will autodetect
the compression format of the archive using TESTFILE.EXE (a utility provided by
Clark Development with their PCBoard BBS Software) and verify any graphical
uploads with GFXCheck:
@Echo off
cls
if exist pcbpass.txt del pcbpass.txt
if exist pcbfail.txt del pcbfail.txt
REM - Intercept GIF, JPEG and BMP files for test...
d:\pcb\testfile %1 gif jpg bmp
if errorlevel 98 goto ARCHIVE_TEST
d:\gfxchk\gfxchk -cgfxchk.cfg -f%1 -d%2
if errorlevel 0 goto GFX_OK
echo ERROR: File failed GFXCheck file check... > pcbfail.txt
goto END
:GFX_OK
echo File passed GFXCheck file check... > pcbpass.txt
goto END
REM - Your upload processing software goes here for general archives...
:ARCHIVE_TEST
e:\programs\ulp2\ulp -Ce:\programs\ulp2\ulp.cfg -F%1 -M%2 -D%3 -T0
:END
exit
OTHER SOFTWARE:
───────────────
If you are using a BBS file and/or upload processing system other than those
described above, please provide information regarding your implementation
details for inclusion in this documentation. Thanks!
┌──────────────────────────────┐
│ 10. The Future of GFXCheck │
└──────────────────────────────┘
GFXCheck will be supported as long as I'm poking around cyberspace (which could
be quite a while...once it's in your blood, it's hard to shake it <g>).
GFXCheck will be expanding it's features so it will be your first choice in
graphic file checkers. Some current plans:
∙ Develop functionality to attempt repair of defective graphic files.
∙ None...any ideas from you guys? Thanks! <g>
If you have any other suggestions, contact me by good old-fashioned snail-mail
or via the avenues described in SUPPORT.DOC.
Thanks for giving GFXCheck a try!
┌────────────────────────┐
│ 11. Acknowledgements │
└────────────────────────┘
The Graphics Interchange Format(c) is the Copyright property of CompuServe
Incorporated. GIF(sm) is a Service Mark property of CompuServe Incorporated.
(Standard verbage required by CompuServe)
┌────────────────────────────┐
│ Appendix A: Error Codes │
└────────────────────────────┘
The following is a list of the error codes that GFXCheck puts in the log file
to indicate the various errors detected in GIF, JPEG and BMP files (if the
FAIL_ERRLEV parameter is set to -1, this will also be the operating system
errorlevel). Since many of these errors are structural in nature, they may not
be of any interest to the average user, but here they are anyway:
1 Unknown format (e.g. not a GIF or JPEG file)
2 Does not meet minimum resolution defined
3 Unexpected end of file (short file)
10 Error in GIF file header
11 Error in GIF image descriptor
12 No image in GIF file
13 GIF version conflict (e.g. GIF89a extensions in GIF87a file)
14 GIFLITEd GIF file (only if ALLOW_GIFLITE is set to "no")
20 JPEG duplicate start of image marker
21 JPEG duplicate APP0 application marker
22 Error in JPEG APP0 application block
23 JPEG duplicate start of frame marker
24 Error in JPEG start of frame block
25 Error in JPEG Huffman table block
26 Invalid marker in JPEG file
27 Missing a required marker in JPEG file
28 No image in JPEG file
29 Error in JPEG quantization table block
30 Error in JPEG restart interval block
31 Invalid or unknown JPEG marker
40 Error in BMP file header
41 Invalid number of planes in BMP
42 Invalid compression in BMP
43 Invalid colors used value in BMP
┌─────────────────────────────────────┐
│ Appendix B: Command Line Summary │
└─────────────────────────────────────┘
GFXCHK2 -Cconfig.ext -Fd:\path\graphic.ext [-Dd:\path\descrip.ext] [-I] [-R]
[-Q]
-C filename of the configuration file
-F full path and filename of the graphic file(s) to be checked
-D full path and filename of the description file to be updated [optional]
-I extract image parameters only (no checking) [optional]
-R retain original graphic file date stamp(s) [optional]
-Q quiets beep on error [optional]